using System;
using System.Collections.Generic;
using System.Data;
using System.Configuration;
using System.IO;
using System.Web.UI;
using Anthem;
using BusinessRules;
using Common;
using DataAccess;

public partial class SigPlanProgramaListado : PageBase
{
    #region Propiedades

    public string IdentificadorPszId
    {
        get { return (ViewState["IdentificadorPszId"] == null ? string.Empty : ViewState["IdentificadorPszId"].ToString()); }
        set { ViewState["IdentificadorPszId"] = value; }
    }

    private DataTable SigProgramaZonasGeograficasDataTable
    {

        get
        {

            DataTable objTable = null;
            if (Cache[SigProgramaZonasGeograficasData.SIG_PLAN_PROGRAMA_TABLE + Session.SessionID] != null)
                objTable = (DataTable)Cache[SigProgramaZonasGeograficasData.SIG_PLAN_PROGRAMA_TABLE + Session.SessionID];
            return objTable;
        }

        set
        {
            if (value != null)
            {
                Cache.Insert(SigProgramaZonasGeograficasData.SIG_PLAN_PROGRAMA_TABLE + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }

    #endregion

    #region Page_Load

    protected void Page_Load(object sender, EventArgs e)
    {
        WccAcciones1.AddEnabledDuringCallBack = false;
        WccAcciones1.AddTextDuringCallBack = "Guardando... Por favor esperar!!!";
        WccAcciones1.UpdateEnabledDuringCallBack = false;
        WccAcciones1.UpdateTextDuringCallBack = "Guardando... Por favor espere!!!";

        if (Manager.IsCallBack)
        {
            Manager.RegisterClientScriptBlock(typeof(Page), "reloj", "<script>muestraReloj2();</script>");
        }
            

        WccAcciones1.Permisos = Permisos;
        if (Permisos.Contains(Utilidad.Acciones.Publicar))
        {
            WccAcciones1.PublishVisible = true;
        }
        if (!IsPostBack)
        {
            BindDatosPorDepartamento();
        }

        ////////////////////////////
        // cargar Programas de cache //
        ////////////////////////////
        if (SigProgramaZonasGeograficasDataTable != null)
        {
            if (SigProgramaZonasGeograficasDataTable.Rows.Count > 0)
            {
                gridPlanesProgramas.DataSource = SigProgramaZonasGeograficasDataTable.DefaultView;
                gridPlanesProgramas.DataBind();
            }
        }

        

    }

    #endregion

    #region crearContextItems

    private void crearContextItems()
    {
        try
        {
            Context.Items["IdentificadorPszId"] = IdentificadorPszId;
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.ToString();
        }
    }


    #endregion

    #region BindDatosPorDepartamento

    private void BindDatosPorDepartamento()
    {
        SigProgramaZonasGeograficas objSigProgramaZonasGeograficas = new SigProgramaZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
        SigProgramaZonasGeograficasData objSigProgramaZonasGeograficasData = objSigProgramaZonasGeograficas.ConsultarProgramaZonasGeograficasZonPadreIDAdministrador("0",Usuario.PerfilActual.ToString(),"0","","");
        SigProgramaZonasGeograficasDataTable = objSigProgramaZonasGeograficasData;
        gridPlanesProgramas.DataSource = objSigProgramaZonasGeograficasData.DefaultView;
        gridPlanesProgramas.DataBind();
        //pnlEjecucionTerritorial.Visible = objSigPlanProgramaData.Rows.Count > 0;
    }

    #endregion

    #region WccAcciones1_Delete_OnClick

    protected void WccAcciones1_Delete_OnClick(object sender, ImageClickEventArgs e)
    {
        List<object> keyValues = gridPlanesProgramas.GetSelectedFieldValues("SPZ_ID");

        try
        {
            foreach (object key in keyValues)
            {
                SigImagenesPrograma objSigImagenesPrograma = new SigImagenesPrograma(ConfigurationManager.AppSettings["Conn"]);
                SigImagenesProgramasData objSigImagenesProgramasData = objSigImagenesPrograma.ConsultarSigImagenesProgramaSPZid(key.ToString());
                string strLocation = Server.MapPath("Archivos/");
                SigProgramaZonasGeograficas objSigProgramaZonasGeograficas =
                    new SigProgramaZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
                objSigProgramaZonasGeograficas.EliminarPlanesProgramasConTransacciones(key.ToString());
                BindDatosPorDepartamento();

                //Eliminar Imagenes Relacionadas
                foreach (DataRow obj in objSigImagenesProgramasData.Rows)
                {
                    DeleteFile(strLocation + obj[SigImagenesProgramasData.SIP_NOMBRE_FIELD]);
                }
                gridPlanesProgramas.Selection.UnselectAll();
                Utilidad.mostrarMensaje(Utilidad.TiposMensajes.Mensaje, Utilidad.TraerMensaje("gmsgEliminarRegistrosExitoso"), lblMensaje);									
                //elimina los items seleccionados y hace nuevamente un bind contra la base de datos
            }
        }

        catch (Exception ex)
        {
            //throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            //lblMensaje.Text = ex.Message;
            Utilidad.mostrarMensaje(Utilidad.TiposMensajes.Error, ex.Message, lblMensaje);
        }

    }

    #endregion

    #region DeleteFile

    private static void DeleteFile(string strFileName)
    { //Delete file from the server
        if (strFileName.Trim().Length > 0)
        {
            FileInfo fi = new FileInfo(strFileName);
            if (fi.Exists) //if file exists delete it
            {
                fi.Delete();
            }
        }
    }

    #endregion

    #region WccAcciones1_Add_OnClick

    protected void WccAcciones1_Add_OnClick(object sender, ImageClickEventArgs e)
    {
        Server.Transfer("SigPlanPrograma.aspx?SSM_ID=8", true);

    }

    #endregion

    #region WccAcciones1_Update_OnClick

    protected void WccAcciones1_Update_OnClick(object sender, ImageClickEventArgs e)
    {
        List<object> keyValues = gridPlanesProgramas.GetSelectedFieldValues("SPZ_ID");
        try
        {
            foreach (object key in keyValues)
            {
                IdentificadorPszId = key.ToString();
            }
            crearContextItems();
            Server.Transfer("SigPlanPrograma.aspx?SSM_ID=8", true);
        }
        catch (Exception ex)
        {
            //throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            lblMensaje.Text = ex.Message;
        }

    }

    #endregion

    #region lnkEjecucion_Click

    protected void lnkEjecucion_Click(object sender, EventArgs e)
    {
        List<object> keyValues = gridPlanesProgramas.GetSelectedFieldValues("SPZ_ID");
        try
        {
            foreach (object key in keyValues)
            {
                IdentificadorPszId = key.ToString();
            }
            crearContextItems();
            Server.Transfer("EjecucionListado.aspx?SSM_ID=8", true);
        }
        catch (Exception ex)
        {
            //throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            lblMensaje.Text = ex.Message;
        }

    }

    #endregion

    #region LnkFormacionAcademica_Click

    protected void LnkFormacionAcademica_Click(object sender, EventArgs e)
    {
        List<object> keyValues = gridPlanesProgramas.GetSelectedFieldValues("SPZ_ID");
        try
        {
            foreach (object key in keyValues)
            {
                IdentificadorPszId = key.ToString();
            }
            crearContextItems();
            Server.Transfer("CofinanciacionListado.aspx?SSM_ID=8", true);
        }
        catch (Exception ex)
        {
            //throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            lblMensaje.Text = ex.Message;
        }
    }

    #endregion

    #region lnkPlanPrograma_Click

    protected void lnkPlanPrograma_Click(object sender, EventArgs e)
    {
        List<object> keyValues = gridPlanesProgramas.GetSelectedFieldValues("SPZ_ID");
        try
        {
            foreach (object key in keyValues)
            {
                IdentificadorPszId = key.ToString();
            }
            crearContextItems();
            Server.Transfer("SigPlanPrograma.aspx?SSM_ID=8", true);
        }
        catch (Exception ex)
        {
            //throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            lblMensaje.Text = ex.Message;
        }
    }

    #endregion

    #region WccAcciones1_Publish_OnClick

    protected void WccAcciones1_Publish_OnClick(object sender, ImageClickEventArgs e)
    {
        List<object> keyValues = gridPlanesProgramas.GetSelectedFieldValues("SPZ_ID");

        try
        {
            foreach (object key in keyValues)
            {
                
                SigProgramaZonasGeograficas objSigProgramaZonasGeograficas =
                    new SigProgramaZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
                objSigProgramaZonasGeograficas.ActualizarProgramasZonasGeograficasEstado(key.ToString(),EnumHelper.GetDescription(Utilidad.Estados.Publicado));
                BindDatosPorDepartamento();

              
                gridPlanesProgramas.Selection.UnselectAll();
                 Utilidad.mostrarMensaje(Utilidad.TiposMensajes.Mensaje, Utilidad.TraerMensaje("gmsgCambioEstadoExitoso", "publicados"), lblMensaje);
                //elimina los items seleccionados y hace nuevamente un bind contra la base de datos
            }
        }

        catch (Exception ex)
        {
            Utilidad.mostrarMensaje(Utilidad.TiposMensajes.Error, ex.Message, lblMensaje);
            //throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            lblMensaje.Text = ex.Message;
        }
    }

    #endregion

    #region btnXlsExport_Click

    protected void btnXlsExport_Click(object sender, EventArgs e)
    {
        gridExport.WriteXlsToResponse();
    }

    #endregion

}
